package redis

import (
	"Shopping/settings"
	"fmt"
	"github.com/go-redis/redis"
)

// rdb 是一个全局的Redis客户端实例
var rdb *redis.Client

// Init 初始化连接
// 该函数读取配置信息，创建并验证与Redis服务器的连接
// 返回值: 如果连接成功，则err为nil；否则，err包含错误信息
func Init(cfg *settings.RedisConfig) (err error) {
	// 根据配置信息创建Redis客户端实例
	rdb = redis.NewClient(&redis.Options{
		Addr: fmt.Sprintf("%s:%d",
			cfg.Host,
			cfg.Port,
		),
		Password: cfg.Password,
		DB:       cfg.DB,
		PoolSize: cfg.PoolSize,
	})

	// 测试连接是否成功
	_, err = rdb.Ping().Result()
	return
}

// Close 关闭Redis连接
// 该函数释放Redis客户端实例占用的资源
func Close() {
	_ = rdb.Close()
}
